DynamoDB তে Query এবং Scan দুটি অপারেশন ডেটা রিট্রিভ করার জন্য ব্যবহৃত হয়, তবে তাদের পারফরম্যান্স উন্নত করার জন্য কিছু কৌশল অনুসরণ করা প্রয়োজন। Query অপারেশন সাধারণত Scan অপারেশন থেকে অনেক দ্রুত, কারণ এটি নির্দিষ্ট Partition Key (এবং Sort Key) এর ভিত্তিতে ডেটা অনুসন্ধান করে। তবে, Scan যখন প্রয়োজনীয় ডেটার পরিমাণ খুব বেশি, তখন তা সিস্টেমের পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে।
এখানে Query এবং Scan অপারেশনের পারফরম্যান্স অপটিমাইজ করার জন্য কিছু পরামর্শ দেওয়া হলো:
Proper Indexing:
aws dynamodb update-table \
--table-name Products \
--attribute-definitions \
AttributeName=Category,AttributeType=S \
AttributeName=Price,AttributeType=N \
--global-secondary-index-updates \
"[{\"Create\":{\"IndexName\":\"CategoryPriceIndex\",\"KeySchema\":[{\"AttributeName\":\"Category\",\"KeyType\":\"HASH\"},{\"AttributeName\":\"Price\",\"KeyType\":\"RANGE\"}],\"Projection\":{\"ProjectionType\":\"ALL\"},\"ProvisionedThroughput\":{\"ReadCapacityUnits\":5,\"WriteCapacityUnits\":5}}]"
Efficient Use of KeyConditionExpression:
উদাহরণ:
response = table.query(
KeyConditionExpression=Key('UserID').eq('12345') & Key('OrderDate').between('2023-01-01', '2023-12-31')
)
Limit the Return Data:
উদাহরণ:
response = table.query(
KeyConditionExpression=Key('UserID').eq('12345'),
ProjectionExpression="UserName, Email"
)
Pagination (Result Limiting):
response = table.query(
KeyConditionExpression=Key('UserID').eq('12345'),
ExclusiveStartKey=last_evaluated_key
)
Scan অপারেশন সাধারণত কম কার্যকরী এবং বেশি সময় নেয় কারণ এটি পুরো টেবিল স্ক্যান করে। তবে, কিছু কৌশল অনুসরণ করে Scan এর পারফরম্যান্স উন্নত করা সম্ভব।
FilterExpression ব্যবহার করুন:
উদাহরণ:
response = table.scan(
FilterExpression=Attr('Price').gt(100) & Attr('Category').eq('Electronics')
)
Use ProjectionExpression:
উদাহরণ:
response = table.scan(
ProjectionExpression="ProductID, ProductName, Price"
)
Use Parallel Scans:
উদাহরণ:
response = table.scan(
TotalSegments=4,
Segment=0 # 0 to 3 for parallel scans
)
Limit the Scan Size:
উদাহরণ:
response = table.scan(
Limit=100 # Limit the scan to 100 items
)
বৈশিষ্ট্য | Query | Scan |
---|---|---|
পারফরম্যান্স | দ্রুত, পারফরম্যান্স অপটিমাইজড | ধীর, পুরো টেবিল স্ক্যান করা হয় |
ডেটা রিটার্ন | নির্দিষ্ট Partition Key এবং Sort Key ব্যবহার করে ফিল্টার করা হয় | পুরো টেবিলের সব ডেটা স্ক্যান করা হয় |
অপশনাল ফিল্টার | FilterExpression দিয়ে ফিল্টার করা যেতে পারে | FilterExpression দিয়ে ফিল্টার করা যেতে পারে |
ইন্ডেক্স | GSI এবং LSI ব্যবহার করা যেতে পারে | সাধারণত ইনডেক্স ব্যবহার করা হয় না |
পেজিনেশন | LastEvaluatedKey ব্যবহার করা হয় | ExclusiveStartKey এবং প্যারালেল স্ক্যান |
Query অপারেশনের মাধ্যমে সর্বদা পারফরম্যান্স এবং খরচ কমানো সম্ভব, যেখানে আপনি টেবিলের একদম নির্দিষ্ট অংশ অনুসন্ধান করেন।
common.read_more